package com.piece.core.verifycode.properties;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;

/**
 * 验证码配置
 */
@Data
@RefreshScope
@Configuration
public class VerifyCodeProperties {

    /**
     * 默认保存前缀
     */
    @Value("${verifycode.kaptcha.prefix:KAPTCHA_CODE_}")
    private String prefix;

    /**
     * 验证码过期时间（秒）
     */
    @Value("${verifycode.kaptcha.expire:60}")
    private int codeExpire = 60;

    // 是否有边框
    @Value("${verifycode.kaptcha.border:yes}")
    private String border;

    // 边框颜色
    @Value("${verifycode.kaptcha.border.color:105,179,90}")
    private String borderColor;

    // 验证码文本字符大小
    @Value("${verifycode.kaptcha.textproducer.font.size:40}")
    private String fontSize;

    // 验证码文本字符颜色
    @Value("${verifycode.kaptcha.textproducer.font.color:blue}")
    private String fontColor;

    // 图片样式
    // 实现类包含 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
    @Value("${verifycode.kaptcha.obscurificator.impl:com.google.code.kaptcha.impl.WaterRipple}")
    private String obscurificatorImpl;

    // 干扰实现类
    // 实现类包含 com.google.code.kaptcha.impl.NoNoise、com.google.code.kaptcha.impl.DefaultNoise
    @Value("${verifycode.kaptcha.noise.impl:com.google.code.kaptcha.impl.DefaultNoise}")
    private String noiseImpl;

    // 验证码文本字体样式
    @Value("${verifycode.kaptcha.textproducer.font.names:Arial,Courier}")
    private String fontNames;

    // 验证码文本字符间距
    @Value("${verifycode.kaptcha.textproducer.char.space:2}")
    private String charSpace;

    // 验证码文本字符长度
    @Value("${verifycode.kaptcha.textproducer.char.length:4}")
    private String charLength;

    // 验证码噪点颜色
    @Value("${verifycode.kaptcha.noise.color:black}")
    private String noiseColor;

    // 验证码文本生成器
    @Value("${verifycode.kaptcha.textproducer.impl:com.piece.core.oauth.validatecode.captcha.CaptchaCreator}")
    private String textproducerImpl;

    // 短信验证码字符个数
    @Value("${verifycode.sms.length:4}")
    private int smsLength = 4;

    // 短信验证码过期时间（秒）
    @Value("${verifycode.sms.expire:600}")
    private int smsExpire = 600;
}
